﻿using System;
using System.Runtime.Serialization;
using System.Collections.Generic;
using System.Threading;
using BrainTechLLC.ThreadSafeObjects;
using System.Reflection;

namespace BrainTechLLC
{
    public interface ICommandToPerform
    {
        long ApplyToID { get; set; }
        PropertyData Arguments { get; set; }
        Delegate CheckIsPermitted { get; }
        object CommandOutput { get; set; }
        string UserInput { get; set; }
        PropertyData ModifyingArguments { get; set; }
        object Perform();
        Delegate PerformCommand { get; }
        Method PerformMethod { get; set; }
        Method CheckPermittedMethod { get; set; }
        int RescheduleMS { get; set; }
    }
}
